package top.infopub.mgr.fia.dao;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import top.infopub.dto.fia.FundsPlanDetailDto;
import top.infopub.generic.GenericDao;
import top.infopub.model.fia.FundsPlanCost;
import top.infopub.model.fia.FundsPlanDetail;
import top.infopub.model.fia.FundsPlanTypes;

import java.util.List;

/** 月度资金计划明细(FIA_FUNDS_PLAN_DETAIL) **/
@Repository
public interface FundsPlanDetailDao extends GenericDao<FundsPlanDetail, String> {
    /**
     * 根据父ID查询类型明细
     * @param parentId
     * @return
     */
    List<FundsPlanTypes> queryTypesByParentId(@Param("parentId") String parentId);

    /**
     * 根据主表ID查询详情信息
     * @return
     */
    List<FundsPlanDetailDto> queryCurrDetailByFundsPlanId(@Param("fundsPlanId") String fundsPlanId);

    /**
     * 根据项目编码和前端选择的当前年月查询下月为开始节点的详情
     * @param proCode
     * @param currDate
     * @return
     */
    List<FundsPlanDetailDto> queryNextDetailByProCodeAndCurrDate(@Param("proCode") String proCode,
                                                                    @Param("currDate") String currDate);

    /**
     * 根据项目编码和前端选择的当前年月查询下下月为开始节点的详情
     * @param proCode
     * @param currDate
     * @return
     */
    List<FundsPlanDetailDto> queryLowestDetailByProCodeAndCurrDate(@Param("proCode") String proCode,
                                                                    @Param("currDate") String currDate);

    /**
     * 根据子项ID查询费用列表
     * @param fpDetailId
     * @return
     */
    List<FundsPlanCost> queryCostList(@Param("fpDetailId") String fpDetailId);

    /**
     * 批量新增费用
     * @param list
     */
    void insertFundsPlanCostBatch(List<FundsPlanCost> list);

    /**
     * 根据详情ID删除费用明细
     * @param fpDetailId
     */
    void deleteFundsPlanCostByDetailId(@Param("fpDetailId") String fpDetailId);

    /**
     * 根据typeid查询类型明细
     * @param typeId
     * @return
     */
    FundsPlanTypes queryTypesByTypeId(@Param("typeId") String typeId);
}